-- 先定义三个变量
-- 锁的key
--local key = KEYS[1];
-- 线程的id
--local threandId = ARGV[1];
-- 锁的过期时间
--local relaseTime = ARGV[2];

-- 释放锁的逻辑
-- 若argv[1] 的值是0 说明锁不存在了 返回无效值
if (redis.call('HEXISTS', KEYS[1], ARGV[1]) == 0) then
    return nil;
end;
-- 若argv[1]的值!=0 说明 当前的锁是自己的 那么就自减一
local count = redis.call('HINCRBY', KEYS[1], ARGV[1], -1);
-- 如果count >0 则重新set key 新的过期时间
if (count > 0) then
    redis.call('EXPIRE', KEYS[1], ARGV[2]);
    return nil;
    --否则的话 删除 这个锁
else
    redis.call('DEL', KEYS[1]);
    return nil;
end;


